If-Match header
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Der HTTP-If-Match
-Request-Header macht eine Anfrage bedingt.
Ein Server wird Ressourcen für die Methoden GET
und HEAD
bereitstellen oder eine Ressource für PUT
und andere unsichere Methoden hochladen, nur wenn die Ressource mit einem der ETag
-Werte im If-Match
-Request-Header übereinstimmt.
Falls die Bedingung nicht übereinstimmt, wird stattdessen die Antwort 412 Precondition Failed
zurückgegeben.
Der Vergleich mit dem gespeicherten ETag
verwendet den starken Vergleichsalgorithmus, was bedeutet, dass zwei Dateien byteweise identisch sein müssen.
Falls ein aufgelistetes ETag
das W/
-Präfix trägt, das auf einen schwachen Entity-Tag hinweist, wird dieser Vergleichsalgorithmus niemals passen.
Es gibt zwei übliche Anwendungsfälle:
- Für die Methoden
GET
undHEAD
, in Kombination mit einemRange
-Header, kann sichergestellt werden, dass die neuen angeforderten Bereiche von derselben Ressource stammen wie der vorherige. - Für andere Methoden, und insbesondere für
PUT
, kannIf-Match
verwendet werden, um das Problem verlorener Aktualisierungen zu verhindern. Es kann überprüft werden, ob die Modifikation einer Ressource, die der Benutzer hochladen möchte, nicht eine andere Änderung überschreibt, die seit dem ursprünglichen Abruf der Ressource durchgeführt wurde.
Header-Typ | Request-Header |
---|---|
Verbotener Request-Header | Nein |
Syntax
If-Match: <etag_value>
If-Match: <etag_value>, <etag_value>, …
Direktiven
<etag_value>
-
Entity-Tags, die die angeforderten Ressourcen eindeutig darstellen. Sie sind eine Zeichenfolge von ASCII-Zeichen, die in Anführungszeichen gesetzt sind (wie
"675af34563dc-tr34"
). Sie können mitW/
vorangestellt sein, um anzuzeigen, dass sie 'schwach' sind, d.h. dass sie die Ressource semantisch, aber nicht byteweise darstellen. Allerdings werden in einemIf-Match
-Header schwache Entity-Tags niemals matchen. *
-
Der Asterisk ist ein spezieller Wert, der jede Ressource darstellt. Beachten Sie, dass dies als
false
matchen muss, wenn der Ursprungsserver keine aktuelle Darstellung für die Zielressource hat.
Beispiele
If-Match: "bfc13a64729c4290ef5b2c2730249c88ca92d82d"
If-Match: "67ab43", "54ed21", "7892dd"
If-Match: *
Spezifikationen
Specification |
---|
HTTP Semantics # field.if-match |
Browser-Kompatibilität
Siehe auch
ETag
If-None-Match
,If-Modified-Since
,If-Unmodified-Since
bedingte Request-Header412 Precondition Failed